# 抖码算法，让算法学习变得简单有趣
# 作者：老汤


"""
这道题目可以抽象为一个有向图的算法问题。n 个顶点，顶点与顶点之间有依赖关系，也就是边是有向的
需要用到有向图的拓扑排序算法
对于拓扑排序，请学习课程 A【高级篇二：图的经典算法】中的有向图和拓扑排序的章节
链接：https://yjs.xet.tech/s/3am6Lm
"""

# 顶点的个数
from collections import deque

n = int(input())
# 使用邻接表来表达图结构
graph = [None] * n
for i in range(n):
    graph[i] = set()

# 记录每个顶点的入度
in_degrees = [0] * n
while True:
    try:
        data = str(input()).split(" ")
        a = int(data[0])
        if a < 0 or a >= n:
            print("no")
            exit(0)
        b = int(data[1])
        if b < 0 or b >= n:
            print("no")
            exit(0)
        # 有向图：a --> b （跳完格子 a，才会开启 b）
        graph[a].add(b)
        # b 这个顶点的入度 + 1
        in_degrees[b] += 1
    except:
        break

# 拓扑排序
queue = deque()
for v in range(n):
    if in_degrees[v] == 0:
        queue.append(v)

index = 0
while len(queue):
    v = queue.popleft()
    index += 1
    for w in graph[v]:
        in_degrees[w] -= 1
        if in_degrees[w] == 0:
            queue.append(w)

if index != n:
    print("no")
else:
    print("yes")
